<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Layui</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
  <link rel="stylesheet" href="../layui/css/layui.css" tppabs="https://www.layui.site/layui/dist/css/layui.css" media="all">
</head>
<body>
 
 <!-- layui   数据表格渲染 -->
<table id="admin-table" class="Layui-hide"></table>

<!-- 头部工具集 lay-event  事件 -->
<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
    <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
  </div>
</script>

<!-- 表格右侧功能按钮 -->
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
 
<script src="../layui/layui.js" charset="utf-8"></script>
<!-- 注意：如果你直接复制所有代码到本地,上述js路径需要改成你的本地的路径 -->
<script type="text/javascript" src="../../js/jquery-3.4.1.min.js"></script>
<script>
layui.use('table', function(){
  var table = layui.table
  
  ,util = layui.util;
  
  //第一个实例
  table.render({
    elem: '#admin-table' // 对应页面表格元素的ID值
    ,url: '../../admin/findByFirst'
    ,cellMinWidth : 80 // 全局定义常规单元格的最小宽度， layui 2.2.1新增
    
    ,method : 'POST'  // 接口http请求类型，默认：get
    ,page : true // 开启分页 （默认：false)
    ,limit : 2 //每页显示的条数 (默认10)
    ,limits : [2,5,10]  // 每页条数的选择项，默认：[10,20,30,40,50,60,70,80,90]
    ,page:{  // 支持传入laypage组件的所有参数
    	layout:['limit', 'count', 'prev', 'page', 'next', 'skip'] // 自定义分页布局
    	// ,curr:5 // 设定初始在第五页
    	,groups : 1 // 只显示1个连续页码
    	,first: false  // 不显示首页
    	,last: false // 不显示尾页
    }
	 ,toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
    ,defaultToolbar: [{ // 自定义功能图标
    	title: '添加'
      ,layEvent: 'add'
      ,icon: 'layui-icon-add-1'
    },'filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义，去除该参数即可
      title: '提示'
      ,layEvent: 'LAYTABLE_TIPS'
      ,icon: 'layui-icon-tips'
    }]

    ,cols: [[ //表头
    	{type :'checkbox', fixed : 'left'}
      ,{field: 'aid', title: '编号', width:80, sort: true}
      ,{field: 'aname', title: '昵称', width:80, edit:'text'}   // 开启编辑
      ,{field: 'tel', width:80, title: '联系方式', width:200, sort: true, edit:'text'}
      ,{field: 'photo', width:80, title: '个人图像', width : 200, align:'center', templet : function(res){
    	  return res.photo ? '<img src="../'+res.photo+'">' : '<img src="../images/user.png">'
      }} 
      // minWidth : 局部定义当前单元格的最小宽度， layui 2.2.1新增
      ,{field: 'role', title: '角色', width: 100, minWidth:100,templet : function(res){
    	  return res.role == 0 ? '<span>超级管理员</span>' : '<span>普通管理员</span>'
      }}
      ,{field: 'status', title: '状态', width: 80, sort: true, templet : function(res){
    	  return res.role == 0 ? '<span>活跃</span>' : '<span>冻结</span>'
      }}
      ,{fixed: 'right', title:'操作', toolbar:'#barDemo', width:150}
    ]]
    ,response: {
    	statusCode : 200  // 重新规定成功的状态码为200，table 组件默认为0
    }
    ,parseData:function(res){ // 将原始数据解析成table组件所规定的数据
    	return{
    		"code": res.code, // 解析接口状态
    		// "msg" : res.messge, // 解析提示文本
    		"count" : res.data.total, // 解析数据长度
    		"data" : res.data.data ? res.data.data : res.data  // 解析数据列表
    	};
    }
  });
  
  //头工具栏事件
  table.on('toolbar', function(obj){
    var checkStatus = table.checkStatus(obj.config.id);
    switch(obj.event){
      case 'getCheckData':
        var data = checkStatus.data;
        layer.alert(JSON.stringify(data));
      break;
      case 'getCheckLength':
        var data = checkStatus.data;
        layer.msg('选中了：'+ data.length + ' 个');
      break;
      case 'isAll':
        layer.msg(checkStatus.isAll ? '全选': '未全选');
      break;
      
      //自定义头工具栏右侧图标 - 提示
      case 'LAYTABLE_TIPS':
        layer.alert('这是工具栏右侧自定义的一个图标按钮');
      break;
      case 'add':
    	  layer.alert('添加成功!');
      break;
    };
  });
  
  //监听行工具事件
  table.on('tool', function(obj){
    var data = obj.data;
    layEvent = obj.event; // lay-event  对应值de
    //console.log(obj)
    switch(layEvent){
    	case 'del':
    		layer.confirm('真的删除行么', function(index){
   			obj.del();
   	        layer.close(index);
   	      });
    	break;
    	case 'edit':
    		 layer.prompt({
   		        formType: 0   // 输入的格式 0默认文本 1密码 2多行文本框
   		        ,value: data.aname
   		      }, function(value, index){
   		    	  // TODO 发送更新请求
   		    	  $.post("../../admin/updateAname", {aid : data.aid, aname : value}, data=>{
   		    		  if (data > 0){
   		    			obj.update({
   		   		          email: value
   		   		        });
   		    			showMsg('修改信息成功!');
   		    			return;
   		    		  }
   		    		  layer.msg('添加失败...', {icon: 5, offset:"auto", title: "温馨提示", time:2000});
   		    	  })
   		          layer.close(index);
   		      });
    		 break;
        }
  });
  
  //监听单元格编辑
  table.on('edit', function(obj){
    var value = obj.value //得到修改后的值
    ,data = obj.data //得到所在行所有键值
    ,field = obj.field; //得到字段
    //layer.msg('[ID: '+ data.id +'] ' + [field] + ' 字段更改值为：'+ util.escape(value));
    $.post("../../admin/update", {aid: data.aid, [field]: util.escape(value)}, res=>{
    	if (res > 0){
    		showMsg('修改信息成功');
    		return;
    	}
    	showMsg('修改信息失败');
    })
  });

  });

// 信息提示框
function showMsg(title){
	// layer.msg('添加成功...', {icon: 6, offset:"auto", title: "温馨提示", time:2000});
	
	// 显示自动关闭倒计秒数
	layer.alert(title, {
		time: 5*1000
		,success: function(layero, index){
			var timenum = this.time/1000, setText = function(start){
				layer.title((start ? timenum : --timenum) + ' 秒后关闭', index);
			};
			setText(!0);
			this.timer = setInterval(setText, 1000);
			if (timeNum <= 0) clearInterval(this.timer);
		}
		,end: function(){
			clearInterval(this.timer);
		}
	})
}
</script>
</body>
</html>